import router from "../../router";
// import wx from "weixin-jsapi";
import * as myApi from "@/api";
import store from "../../store";
import {
    Notify
} from 'vant'
import {
    Dialog
} from 'vant';
export default {

    install(Vue, options) {


        /**获取微信授权签名 */

        Vue.prototype.jsjdk_wx = function () {
                let params = {
                    url: location.href,
                };
                myApi.jsjdk_wx(params).then((res) => {
                    if (res.code == 0) {
                        console.log(res.data)
                        wx.config({
                            debug: false, // 开启调试模式,
                            appId: res.data.appId, // 必填，公众号的唯一标识
                            timestamp: res.data.timestamp, // 必填，生成签名的时间戳
                            nonceStr: res.data.nonceStr, // 必填，生成签名的随机串
                            signature: res.data.signature, // 必填，签名，
                            jsApiList: ['checkJsApi', 'scanQRCode', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'updateAppMessageShareData', 'updateTimelineShareData', 'getLocation', 'openLocation', 'chooseWXPay'],
                            // 必填，需要使用的JS接口列表
                            openTagList: ['wx-open-launch-weapp']// 可选，需要使用的开放标签列表，例如['wx-open-launch-app']
                        });
                    }
                });
            },
            //微信支付
            Vue.prototype.chooseWXPay = function (pkey) {
                var params = {
                    orderPkey: pkey
                }
                myApi.toPay_order(params).then((res) => {
                    if (res.code == 0) {
                        var data = res.result
                        console.log(data)
                        if (data && data.appId) {
                            wx.ready(function () {
                                console.log('支付参数', {
                                    timestamp: data.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
                                    nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位
                                    package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
                                    signType: data.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
                                    paySign: data.paySign
                                })
                                wx.chooseWXPay({
                                    // appId: data.appId,
                                    timestamp: data.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
                                    nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位
                                    package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
                                    signType: data.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
                                    paySign: data.paySign, // 支付签名
                                    success: function (res) {
                                        let params2 = {
                                            orderPkey: pkey
                                        }
                                        myApi.payAfter_order(params2).then((res) => {
                                            if (res.code == 0) {
                                                Notify({

                                                    message: '支付成功',
                                                    type: 'success'
                                                })
                                                router.replace(`/coupon/payResult?type=success&pkey=${pkey}`)
                                            }
                                        })

                                    },
                                    cancel: function (res) {
                                        // 取消支付后的回调函数
                                        router.replace(`/coupon/payResult?type=lose&pkey=${pkey}`)
                                        Notify({

                                            message: '支付失败',
                                            type: 'danger'
                                        })
                                    }
                                });
                            });
                            wx.error(function (res) {
                                router.replace(`/coupon/payResult?type=lose&pkey=${pkey}`)
                                Notify({

                                    message: '支付失败',
                                    type: 'danger'
                                })
                            });
                        } else {
                            let params2 = {
                                orderPkey: pkey
                            }
                            myApi.payAfter_order(params2).then((res) => {
                                if (res.code == 0) {
                                    Notify({

                                        message: '支付成功',
                                        type: 'success'
                                    })
                                    router.replace(`/coupon/payResult?type=success&pkey=${pkey}`)
                                }
                            })
                        }


                    } else {
                        router.replace(`/coupon/payResult?type=lose&pkey=${pkey}`)
                        Notify({

                            message: '支付失败',
                            type: 'danger'
                        })
                    }
                })

            },
            //调起微信扫一扫接口
            Vue.prototype.scanQRCode = function (dataList, link) {
                console.log('dataList', dataList)
                wx.scanQRCode({
                    needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
                    scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码，默认二者都有
                    success: function (res) {
                        console.log(res)
                        var result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果
                        result = result.replace(store.state.shareUrl, '')
                        router.push(result)
                    }
                });
            },

            // 微信分享 自定义“分享给朋友”及“分享到QQ”按钮的分享内容（1.4.0）
            Vue.prototype.updateAppMessageShareData = function (dataList, link) {
                console.log('当前环境', store.state.nodeenv)
                if (store.state.nodeenv != "development") {
                    store.state.loadingShow = true
                }
                console.log('微信分享', dataList, link)
                get_member()


                wx.ready(function () { //需在用户可能点击分享按钮前就先调用

                    wx.updateTimelineShareData({ //分享朋友圈
                        title: dataList.title,
                        link: link,
                        imgUrl: dataList.imgUrl,
                        success: function () {
                            // 用户点击了分享后执行的回调函数
                            console.log(1, '好友设置成功')
                            store.state.loadingShow = false
                        },
                        cancel: function () {

                        }
                    })

                    wx.updateAppMessageShareData({ //分享好友
                        title: dataList.title, // 分享标题
                        desc: dataList.desc, // 分享描述
                        link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                        imgUrl: dataList.imgUrl, // 分享图标
                        success: function (res) {
                            console.log(res, '好友设置成功')
                            store.state.loadingShow = false
                            // 设置成功
                        }
                    })
                });
                wx.error(function (res) {
                    alert(JSON.stringify(res));
                    console.log(res);
                    store.state.loadingShow = false
                });

                function get_member() {
                    var params = {};
                    myApi.get_member(params).then((res) => {
                        if (res.code == 0) {
                            if (!res.result.mobile) {
                                Dialog.confirm({
                                        title: '提示',
                                        confirmButtonText: '前往绑定',
                                        cancelButtonText: '暂不绑定',
                                        message: '您还不是正式用户,分享后将不会获得相应积分,请先进行绑定操作',
                                    })
                                    .then(() => {
                                        router.push('/')
                                    })
                                    .catch(() => {
                                        // router.back()
                                        // on cancel
                                    });
                            }
                        } else {}
                    });
                }
            },
            //内置地图查看位置接口
            Vue.prototype.openLocation = function (queryVendorList) {
                console.log('queryVendorList', queryVendorList)
                wx.openLocation({
                    latitude: parseFloat(queryVendorList.latitude), // 纬度，浮点数，范围为90 ~ -90
                    longitude: parseFloat(queryVendorList.longitude), // 经度，浮点数，范围为180 ~ -180。
                    name: queryVendorList.name, // 位置名
                    address: queryVendorList.addr, // 地址详情说明
                    scale: 15, // 地图缩放级别,整型值,范围从1~28。默认为最大
                    infoUrl: '', // 在查看位置界面底部显示的超链接,可点击跳转
                });
            },
            /**获取当前地址经纬度 */

            Vue.prototype.getLocation = function () {
                console.log('获取当前地址经纬度')
                wx.ready(function () {
                    // config信息验证后会执行 ready 方法，所有接口调用都必须在 config 接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在 ready 函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在 ready 函数中。
                    wx.getLocation({
                        type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
                        success: function (res) {
                            console.log('getLocation111', res)
                            store.dispatch('SET_LOCATION', res);
                        },
                    });
                });

            }

    }
};